package com.enjoyor.soa.traffic.api.service.dubbo.psms;
import java.util.Date;
import java.util.List;
import com.enjoyor.soa.traffic.api.dto.psms.ScheInfoDto;
import com.enjoyor.soa.traffic.api.dto.psms.SchePlanDeviceDto;
import com.enjoyor.soa.traffic.api.dto.psms.SchePlanDto;
import com.enjoyor.soa.traffic.api.dto.psms.SchePlanPoliceDto;
import com.enjoyor.soa.traffic.api.dto.psms.SchePoliceDeviceDto;
import com.enjoyor.soa.traffic.api.dto.psms.SchePostDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 
* @ClassName: DubboScheInfoService 
* @Description: 排班计划服务
* @author yrch  961774545@qq.com
* @date 2017年10月11日 下午4:40:37 
*
 */
@SuppressWarnings("rawtypes")
public interface DubboScheInfoService {

	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param deptId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	public ResultPojo listScheInfo(String token, String systemKey,String scheId, String deptId, Date beginTime, 
			Date endTime);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param deptId
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @return
	 */
	public ResultPojo listScheInfo(String token, String systemKey,String scheId, String deptId, Date beginTime, 
			Date endTime,String status);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheInfoDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo saveScheInfo(String token, String systemKey,ScheInfoDto scheInfoDto, String user, String ip, String sysName);
	
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeScheInfo(String token, String systemKey,String scheId, String user, String ip, String sysName);
	
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheInfoDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifyScheInfo(String token, String systemKey,ScheInfoDto scheInfoDto, String user, String ip, String sysName);
	
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheInfoDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifyScheInfoStatus(String token, String systemKey,ScheInfoDto scheInfoDto, String user, String ip, String sysName);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param oldScheId
	 * @param beginDate
	 * @param endDate
	 * @param policeComp
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo reuseScheInfo(String token, String systemKey,String oldScheId, Date beginDate, Date endDate, 
			String policeComp, String user, String ip, String sysName);
	
	
	//schePost
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePostIds
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeSchePost(String token, String systemKey,List<String> schePostIds, String user, String ip, String sysName);
	
	/**
	 *   
	 * @param token
	 * @param systemKey
	 * @param listSchePostDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo saveListSchePost(String token, String systemKey,List<SchePostDto> listSchePostDto, 
			  String user, String ip, String sysName);
	
	/**  
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePostId
	 * @param postId
	 * @param scheId
	 * @return
	 */
	public ResultPojo listSchePost(String token, String systemKey,String schePostId, String postId,String scheId);
	    
	/**
	 *   
	 * @param token
	 * @param systemKey
	 * @param deptId
	 * @return
	 */
	public ResultPojo listSchePostByDeptId(String token, String systemKey,String deptId);
	
	/**  
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePostDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifySchePost(String token, String systemKey,SchePostDto schePostDto, String user, String ip, String sysName);
	
	
	
	//schePlan
	/**
	 * @param token
	 * @param systemKey
	 * @param schePlanIds
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeSchePlan(String token, String systemKey,List<String> schePlanIds, String user, String ip, String sysName);
	
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanId
	 * @param schePostId
	 * @param planDate
	 * @param beginTime
	 * @param endTime
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeSchePlan(String token, String systemKey,String schePlanId, String schePostId,
			Date planDate, Date beginTime, Date endTime, String user, String ip, String sysName);
	

    /**
     * 
     * @param token
     * @param systemKey
     * @param listSchePlanDto
     * @param user
     * @param ip
     * @param sysName
     * @return
     */
	public ResultPojo saveListSchePlan(String token, String systemKey,List<SchePlanDto> listSchePlanDto, String user, String ip, String sysName);

    
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanId
	 * @param SchePostId
	 * @param PlanDate
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	public ResultPojo listSchePlan(String token, String systemKey,String  schePlanId, String SchePostId, Date PlanDate,
			Date beginTime, Date endTime);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifySchePlan(String token, String systemKey,SchePlanDto schePlanDto, String user, String ip, String sysName);
	
	//schePlanPolice
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanPoliceId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeSchePlanPolice(String token, String systemKey,List<String> schePlanPoliceId, String user, String ip, String sysName);

    /**
     * 
     * @param token
     * @param systemKey
     * @param listSchePlanPoliceDto
     * @param user
     * @param ip
     * @param sysName
     * @return
     */
	public ResultPojo saveListSchePlanPolice(String token, String systemKey,List<SchePlanPoliceDto> listSchePlanPoliceDto,  
			String user, String ip, String sysName);

    /**
     * 
     * @param token
     * @param systemKey
     * @param schePlanDeviceId
     * @param schePlanId
     * @param beginTime
     * @param endTime
     * @return
     */
	public ResultPojo listSchePlanPolice(String token, String systemKey,String schePlanDeviceId, String schePlanId, Date beginTime, Date endTime);

    /**
     * 
     * @param token
     * @param systemKey
     * @param schePlanPoliceDto
     * @param user
     * @param ip
     * @param sysName
     * @return
     */
	public ResultPojo modifySchePlanPolice(String token, String systemKey,SchePlanPoliceDto schePlanPoliceDto,String user, String ip, String sysName);
	
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePoliceDeviceIds
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeSchePoliceDevice(String token, String systemKey,List<String> schePoliceDeviceIds, String user, String ip, String sysName);

    /**
     * 
     * @param token
     * @param systemKey
     * @param listSchePoliceDevice
     * @return
     */
	public ResultPojo saveListSchePoliceDevice(String token, String systemKey,List<SchePoliceDeviceDto> listSchePoliceDevice);

    /**
     * 
     * @param token
     * @param systemKey
     * @param schePoliceDeviceId
     * @param schePlanPoliceId
     * @param user
     * @param ip
     * @param sysName
     * @return
     */
	public ResultPojo listSchePoliceDevice(String token, String systemKey,String schePoliceDeviceId,String schePlanPoliceId, 
			String user, String ip, String sysName);

    /**
     * 
     * @param token
     * @param systemKey
     * @param schePoliceDeviceDto
     * @param user
     * @param ip
     * @param sysName
     * @return
     */
	public ResultPojo modifySchePoliceDevice(String token, String systemKey,SchePoliceDeviceDto schePoliceDeviceDto, String user, String ip, String sysName);
	

	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanId
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo removeSchePlanDevice(String token, String systemKey,List<String> schePlanId, String user, String ip, String sysName);

    /**
     * 
     * @param token
     * @param systemKey
     * @param listSchePlanDto
     * @param user
     * @param ip
     * @param sysName
     * @return
     */
	public ResultPojo saveListSchePlanDevice(String token, String systemKey,List<SchePlanDeviceDto> listSchePlanDto, String user, String ip, String sysName);

    
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanId
	 * @param schePlanDeviceId
	 * @return
	 */
	public ResultPojo listSchePlanDevice(String token, String systemKey,String schePlanId,String schePlanDeviceId);

    
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param schePlanDeviceDto
	 * @param user
	 * @param ip
	 * @param sysName
	 * @return
	 */
	public ResultPojo modifySchePlanDevice(String token, String systemKey,SchePlanDeviceDto schePlanDeviceDto, String user, String ip, String sysName);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param deptId
	 * @param beginTime
	 * @param endTime
	 * @param page
	 * @return
	 */
	public ResultPojo pageScheInfo(String token, String systemKey,String scheId, String deptId, Date beginTime, 
			Date endTime,Page page);
	
	
	public ResultPojo pageScheInfo(String token, String systemKey,String scheId, String deptId, Date beginTime, 
			Date endTime,String status,Page page);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param schePostId
	 * @param schePlanId
	 * @param schePlanDeviceId
	 * @param onlyGetPost   是否只获得岗位信息。  是：yes  否  No
	 * @param scheDeptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param planDate
	 * @param status
	 * @param beginTime
	 * @param endTime
	 * @param policeId
	 * @param policeName
	 * @param policeComp
	 * @param deviceId
	 * @param deviceName
	 * @param deviceTypeCode
	 * @param postId
	 * @param postName
	 * @param postType
	 * @param policeDeviceId
	 * @param policeDeviceName
	 * @param policeDeviceTypeCode
	 * @return
	 */
	public ResultPojo listSchePlanDetail(String token, String systemKey, String scheId, String schePostId,
			String schePlanId, String schePlanDeviceId, String onlyGetPost,
			String scheDeptId,Date scheBeginTime, Date scheEndTime, Date planDate, 
			String status, Date beginTime,Date endTime,
			String policeId, String policeName, String policeComp,
			String deviceId, String deviceName, String deviceTypeCode,
			String postId,String postName,String postType,
			String policeDeviceId,String policeDeviceName, String policeDeviceTypeCode);
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param schePostId
	 * @param schePlanId
	 * @param schePlanDeviceId
	 * @param onlyGetPost    是否只获得岗位信息。  是：yes  否  No
	 * @param scheDeptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param planDate
	 * @param status
	 * @param beginTime
	 * @param endTime
	 * @param policeId
	 * @param policeName
	 * @param policeComp
	 * @param deviceId
	 * @param deviceName
	 * @param deviceTypeCode
	 * @param postId
	 * @param postName
	 * @param postType
	 * @param policeDeviceId
	 * @param policeDeviceName
	 * @param policeDeviceTypeCode
	 * @param page
	 * @return
	 */
	public ResultPojo pageSchePlanDetail(String token, String systemKey, String scheId, String schePostId,
			String schePlanId, String schePlanDeviceId, String onlyGetPost,
			String scheDeptId,Date scheBeginTime, Date scheEndTime, Date planDate, 
			String status, Date beginTime,Date endTime,
			String policeId, String policeName, String policeComp,
			String deviceId, String deviceName, String deviceTypeCode,
			String postId,String postName,String postType,
			String policeDeviceId,String policeDeviceName, String policeDeviceTypeCode,Page page);
	
	
	
	public ResultPojo pageSchePlanDetailTypeCount(String token, String systemKey, String scheId, String schePostId,
			String schePlanId, String schePlanDeviceId, String onlyGetPost,
			String scheDeptId,Date scheBeginTime, Date scheEndTime, Date planDate, 
			String status, Date beginTime,Date endTime,
			String policeId, String policeName, String policeComp,
			String deviceId, String deviceName, String deviceTypeCode,
			String postId,String postName,String postType,
			String policeDeviceId,String policeDeviceName, String policeDeviceTypeCode,Page page);
	
	
	public ResultPojo pageSchePlanDetailDeviceTypeCount(String token, String systemKey, String scheId, String schePostId,
			String schePlanId, String schePlanDeviceId, String onlyGetPost,
			String scheDeptId,Date scheBeginTime, Date scheEndTime, Date planDate, 
			String status, Date beginTime,Date endTime,
			String policeId, String policeName, String policeComp,
			String deviceId, String deviceName, String deviceTypeCode,
			String postId,String postName,String postType,
			String policeDeviceId,String policeDeviceName, String policeDeviceTypeCode,Page page);
	
	
	/**
	 * 今日警员详情
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param scheDeptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param planDate
	 * @param status
	 * @param beginTime
	 * @param endTime
	 * @param policeId
	 * @param policeName
	 * @param policeComp
	 * @param page
	 * @return
	 */
	public ResultPojo pageSchePlanDetail1(String token, String systemKey, String scheId, String scheDeptId, Date scheBeginTime, Date scheEndTime,
			Date planDate, String status, Date beginTime, Date endTime, String policeId, String policeName,
			String policeComp, Page page);
	
	
	/*public ResultPojo pageSchePlanDetailPolice(String token, String systemKey, String scheId, String scheDeptId, Date scheBeginTime, Date scheEndTime,
			Date planDate, String status, Date beginTime, Date endTime, String policeId, String policeName,
			String policeComp, Page page);*/
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param deptId
	 * @param policeId
	 * @param policeName
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @return
	 */
	public ResultPojo listSchePlanWeekDetailByPolice(String token, String systemKey,String scheId, String deptId, String policeId, 
			String policeName,String policeComp, Date scheBeginTime, Date scheEndTime);
    
	
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param deptId
	 * @param policeId
	 * @param policeName
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param page
	 * @return
	 */
	public ResultPojo pageSchePlanWeekDetailByPolice(String token, String systemKey,String scheId, String deptId, String policeId, 
			String policeName, String policeComp,Date scheBeginTime, Date scheEndTime, Page page);
    
    /**
     * 
     * @param token
     * @param systemKey
     * @param scheId
     * @param deptId
     * @param policeId
     * @param policeName
     * @param scheBeginTime
     * @param scheEndTime
     * @return
     */
	public ResultPojo listSchePlanWeekDetailByPost(String token, String systemKey,String scheId, String deptId, String policeId, 
			String policeName,String policeComp, Date scheBeginTime, Date scheEndTime);
    
	/**
	 * 
	 * @param token
	 * @param systemKey
	 * @param scheId
	 * @param deptId
	 * @param policeId
	 * @param policeName
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param page
	 * @return
	 */
	public ResultPojo pageSchePlanWeekDetailByPost(String token, String systemKey,String scheId, String deptId, String policeId, 
			String policeName,String policeComp, Date scheBeginTime, Date scheEndTime, Page page);
	
	
	
	/**
	 * 今日排班警员分页统计，去重
	 * @param scheId
	 * @param scheDeptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param planDate
	 * @param status
	 * @param beginTime
	 * @param endTime
	 * @param policeId
	 * @param policeName
	 * @param policeComp
	 * @param page
	 * @return
	 */
	public ResultPojo pageSchePlanDetailPoliceDistinct(String token, String systemKey,String scheId,
			List<String> scheDeptId,Date scheBeginTime, Date scheEndTime, Date planDate, 
			String status, Date beginTime,Date endTime,
			String policeId, String policeName, String policeComp,
			Page page);
    
    
	/**
	 * 警员考勤稽查结果按部门统计
	 * @param deptId 统计该部门所有子部门
	 * @param para1  
	 * @param para2
	 * @return
	 * 
	 * 
	 */
	public ResultPojo getAttendPoliceDeptCount(String token, String systemKey,String deptId,String para1,String para2);
    
    /**
     *  部门考勤稽查结果按部门统计
     * @param deptId  统计该部门所有子部门
     * @param para1
     * @param para2
     * @return
     */
	public ResultPojo getAttendPostDeptCount(String token, String systemKey,String deptId,String para1,String para2);
	
	
	/**
	 * 岗位去重
	 * @param scheId
	 * @param scheDeptId
	 * @param scheBeginTime
	 * @param scheEndTime
	 * @param planDate
	 * @param status
	 * @param beginTime
	 * @param endTime
	 * @param postId
	 * @param postName
	 * @param postType
	 * @param page
	 * @return
	 */
	public ResultPojo pageSchePlanDetailPostDistinct(String token, String systemKey,String scheId, List<String> scheDeptId, Date scheBeginTime,
			Date scheEndTime, Date planDate, String status, Date beginTime, Date endTime, String postId,
			String postName, String postType, Page page);
	
}
